import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;

import java.util.Set;

public class RedisSet {

    // 清空数据库
    public static void flushAll(Jedis jedis) {
        jedis.flushAll();
    }

    public static void main(String[] args) {
        JedisPool jedisPool = new JedisPool("tcp://127.0.0.1:8888");

        try (Jedis jedis = jedisPool.getResource()){
            flushAll(jedis);
            // test1(jedis);
            test2(jedis);
        }
    }
    // sadd, smembers, sismember, scard, spop
    private static void test1(Jedis jedis) {
        jedis.sadd("key1", "111", "222", "333");

        // 返回 key 中的元素
        System.out.println("key1: " + jedis.smembers("key1"));

        // 返回 key 中 member 的个数
        System.out.println("key1中元素个数为：" + jedis.scard("key1"));

        // 判断对应 key 的 member是否存在
        System.out.println("key1 中是否存在 444: " + jedis.sismember("key1", "444"));

        // 随机删除一个元素
        System.out.println("随机删除的元素为: " + jedis.spop("key1"));
        System.out.println("key1: " + jedis.smembers("key1"));
    }

    // sinter, sinterstore
    private static void test2(Jedis jedis) {
        jedis.sadd("key1", "111", "222", "333");
        jedis.sadd("key2", "111", "222", "444");

        System.out.println("key1: " + jedis.smembers("key1"));
        System.out.println("key2: " + jedis.smembers("key2"));

        // 求交集
        System.out.println("key1 和 key2 的交集为：" + jedis.sinter("key1", "key2"));

        // 求交集并放到另一个 set 中，返回交集个数
        System.out.println("key1, key2交集个数为: " + jedis.sinterstore("key3", "key1", "key2"));
        System.out.println("key3 中的元素: " + jedis.smembers("key3"));
    }
}
